package com.cloud.websocket.config;

import com.cloud.websocket.handler.HttpAuthHandler;
import com.cloud.websocket.handler.MyInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

import javax.annotation.Resource;

/**
 * 通过实现 WebSocketConfigurer 类并覆盖相应的方法进行 websocket 的配置。
 * 我们主要覆盖 registerWebSocketHandlers 这个方法。
 * 通过向 WebSocketHandlerRegistry 设置不同参数来进行配置。
 * 其中 **addHandler 方法添加我们上面的写的 ws 的  handler 处理类，第二个参数是你暴露出的 ws 路径。
 * addInterceptors 添加我们写的握手过滤器。
 * setAllowedOrigins("*") **这个是关闭跨域校验，方便本地调试，线上推荐打开。
 *
 * @author zhaoyangfu - 2020/7/22 18:18
 */
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Resource
    private HttpAuthHandler httpAuthHandler;
    @Resource
    private MyInterceptor   myInterceptor;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(httpAuthHandler, "myWs")
                .addInterceptors(myInterceptor)
                .setAllowedOrigins("*");
    }
}
